package com.bigShen.pattern.review.main;

/**
 * @author : lei.shen
 * @date : 2018/10/9
 */
public class ReviewDesc {

    /**
     *
     * 总 : Factory, Singleton, Prototype, Proxy, Strategy, Template method, Adapter, Delegate, Decorator, Observer
     *
     * 模式 : 简介
     * 应用场景 : ...
     * 技术场景 : ..
     *
     *
     *  创建型:
     *  Factory :  农耕社会 -> 小作坊 -> 固定流水线
     *             方法,if else  -> 工厂方法 -> 抽象工厂
     *
     *  Singleton : 单例
     *      应用场景 : 独一无二的事物, 太阳, properties文件, 提高资源利用效率
     *      技术场景 ： 懒汉式， 恶汉式, 注册登记式, 反序列化式
     *
     *  Prototype : 原型
     *      应用场景 : 一根猴毛吹出千万个
     *      技术场景 : 浅克隆, 深克隆, 输入输出流字节码 深克隆; 反射深克隆
     *
     *  Proxy : 代理
     *      应用场景: 婚介所, 中介, 黄牛
     *      技术场景: JDK proxy, CGLIB (字节码重组, 动态生成Java类 -> 编译成class -> 加载至JVM -> 反射创建对象执行方法)
     *
     *  Strategy : 策略
     *      应用场景 : 支付方式, 网站第三方登录, 旅行路线
     *      技术场景 : 枚举方式实现支付选择，避免了 if else
     *
     *  Template : 模板方法
     *      应用场景 :  制作饮料(加水 - 加热 - 。。 - （加不同原料） -- 搅拌勾兑 )
     *      技术场景 : JDBC Template
     *
     *  Delegate : 委托
     *      应用场景 : BOSS - 项目经理 - 顶层码农
     *      技术场景 ：类似 静态代理 + 策略模式
     *
     *  Adapter : 适配器
     *      应用场景 : 转接口，1转3数据线,
     *      技术场景 : 兼容老系统的额外登录  is - a，对原有的扩充, 继承接口
     *
     *  Wrapper/Decorator : 装饰器  特殊的适配器     has - a
     *      应用场景 : 对原有的封装，不改变原有的逻辑, 原有的引用进来
     *      技术场景 : 需要包装，但不改变本质, IO流
     *
     *  Observer/Listener :  观察者
     *      应用场景 : 监听器（每个事件做完，捕捉这个事件），
     *      技术场景 : 日志, 触发器, 监听器
     *
     *
     *  SPRING :
     *      AOP : 解耦   ,动态代理
     *      OOP : 封装继承多态
     *      BOP : Bean与Bean之间的关系,不希望每次都重复管理
     *      IOC : 控制反转, 由Spring创建统一管理在Spring IOC容器(map)
     *
     *      DI : Spring创建的Bean对象的属性， 使用get,set 反射注入
     *
     *
     */

}
